Page({

  /**
   * 页面的初始数据
   */
  data: {
    input:"",
    todos:[
      {name:"learning html",completed:false},
      {name:"learning css",completed:true},
      {name:"learning javescript",completed:false},
    ],
    leftCount:2,//未完成的
    allCompleted:false
  },
  //2,拿到文本框里边的值  小程序数据绑定是单向的 必须给文本注册改变事件
  inputChangeHandle:function(e){
    this.setData({
      input:e.detail.value
    })
  },
  //1,点击按钮 触发事件 调用回调函数
  addTodoHandle:function(e){
    if(!this.data.input)return
    var todos=this.data.todos
    todos.push({
      name:this.data.input,
      completed:false
    })
    //3,将这个值添加到列表中
    //必须显示通过setData去改变数据  界面才会发生变化
    this.setData({
      todos:todos,
      input:'',
      leftCount:this.data.leftCount+1
    })
  },
  
  clearHandle:function(){
    console.log("删除")
  },

  //切换选中不选中状态
  toggleTodoHandle:function(e){
    console.log(e.currentTarget)
    var item=this.data.todos[e.currentTarget.dataset.index]
    item.completed=!item.completed
    //根据当前任务的完成状态决定增加或者减少一个
    var leftCount=this.data.leftCount+(item.completed ? -1 : 1)
    this.setData({
      todos:this.data.todos,
      leftCount:leftCount
    })
  },
  //单个删除  注意冒泡问题
  removeTodoHandle:function(e){
    //拿到data中的todos数组
    var todos=this.data.todos
    //item 就splice方法中移除数组
    var item=todos.splice(e.currentTarget.dataset.index,1)[0]
    //todos中移除掉index所指向的元素
    var leftCount=this.data.leftCount-(item.completed ? 0 : 1)
    this.setData({
      todos:todos,
      leftCount:leftCount
    })
  },
  //全选全不选
  toggleAllHandle:function(e){
    //this指向当前页面对象
    this.data.allCompleted=!this.data.allCompleted
    var todos=this.data.todos
    var that=this
    todos.forEach(function(item){
      item.completed=that.data.allCompleted
    })
    var leftCount=this.data.allCompleted ? 0 : this.data.todos.length
    this.setData({
      todos:todos,
      leftCount:leftCount
    })
  },

  //全部删除
  clearHandle:function(e){
    var a=[]
    this.setData({
      todos:a,
      // leftCount:leftCount
    })
  }


  

  
})